/*
  在一个字符串中,找到字符“abcabx”（使用状态机）
 */
  function match(string){
    let state = start;
    for(let c of string){
      state = state(c)
    }
    return state === end;
  }

  function start(c){
    if(c === "a"){
      return foundA;
    } else {
      return start;
    }
  }

  function end(c){
    return end;
  }

  function foundA(c){
    if(c === "b"){
      return foundB;
    }else{
      return start(c);
    }
  }

  function foundB(c){
    if(c === "c"){
      return foundC;
    }else{
      return start(c);
    }
  }

  function foundC(c){
    if(c === "a"){
      return found2A;
    }else{
      return start(c);
    }
  }

  function found2A(c){
    if(c === "b"){
      return found2B;
    }else{
      return start(c);
    }
  }

  function found2B(c){
    if(c === "x"){
      return end;
    }else{
      return foundB(c);
    }
  }

  console.log(match('abcabcabx'))